With the growth of networked computer systems, shared data storage systems have become commonplace. In a networked computer system, multiple hosts are generally coupled by a network to a shared data storage system for the purpose of storing applications and their data. Fibre channel is an example of a network that can be used to form such a configuration. Fibre channel is a network standard that allows multiple initiators to communicate with multiple targets over the network, where the initiator and target may be any device coupled to the network.
Storage systems generally have a finite amount of storage capacity (used to store applications, application data, user data (e.g., databases) and the like) and finite performance bandwidth. Server applications, users, and their data have different growth rates, so it often is difficult to predict and design a storage configuration that is suitable for a long period of time. When capacity of a resource or its performance is at or approaching its limit, the storage configuration typically is adjusted to reallocate resources.
Because storage capacity and performance of the storage server is finite due to performance limitations of devices, processors, memory, etc., there is occasionally a need to migrate (or move) data to another location in the networked computer system. With this migration of data comes an associated migration or reallocation of storage and performance load. Data migration, or movement of data from one location to another, is generally a complicated and time consuming task, requiring many hours of planning and testing.
For example, in the case where the performance of the storage system is approaching its capacity, data may be migrated to another storage system having available capacity.
A conventional way in which people migrate data is to stop execution of the application that access the data, move the application and its data to a new storage location, reconfigure the application to point to the new location, and restart the application. It is a drawback of current migration techniques to require data movement to occur only after the data and their associated applications are offline. Depending on the size of the data, a migration process may take a long time (e.g., days), and the data being to migrated is unavailable for the period of time during the migration. Further, if at any point during the migration there is a failure of one or more elements involved in the migration, the user may have to restart the migration from the beginning. For large migrations, there is much lost time, effort, and money associated with restarting the migration process.